package LC0136;

import java.util.HashMap;
import java.util.Map;

public class Solution2 {

    // hashTable
    public int singleNumber(int[] nums) {
        // HashMap是key-value结构; HashMap是无序的；
        Map<Integer, Integer> map = new HashMap<>();

        // 遍历nums每个元素作为key，在Map中的value记录次数
        // 如果value是null，就为1; 如果不是null，就是1，就再加上1；
        for (Integer i : nums) {    // 这里有自动类型转换的
            // 取出value
            Integer count = map.get(i);
            count = (count == null ? 1 : ++count);
            // 放回value
            map.put(i, count);
        }

        // 遍历，找到value为1的key
        for (Integer i : map.keySet()) {    // .keySet()返回key的集合
            Integer count = map.get(i);
            if (count == 1) {
                return i;
            }
        }
        return -1; // can't find it.
    }

    // 链接：https://leetcode.cn/problems/single-number/solution/xue-suan-fa-jie-guo-xiang-dui-yu-guo-cheng-bu-na-y/
}
